package co.yixiang.modules.system.service.mapper;

import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.modules.system.domain.Dept;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.Set;

/**
 * 部门管理的持久层接口
 */
@Repository
public interface DeptMapper extends CoreMapper<Dept> {

    /**
     * 根据角色ID查询部门信息
     *
     * @param roleId 角色ID
     * @return 部门集合
     */
    @Select("select m.* from sys_dept m LEFT JOIN sys_roles_depts t on m.id= t.dept_id LEFT JOIN sys_role r on r.id = t.role_id where r.id = ${roleId}")
    Set<Dept> findDeptByRoleId(@Param("roleId") Long roleId);

    /**
     * 根据多个角色ID查询部门信息
     *
     * @param roleId 角色ID集合
     * @return 部门集合
     */
    @Select("select * from sys_dept m LEFT JOIN sys_roles_depts t on m.id= t.dept_id LEFT JOIN sys_role r on r.id = t.role_id where r.id in (${roleIds})")
    Set<Dept> findDeptByRoleIds(@Param("roleIds") Set<Long> roleId);
}
